目标:实现kmallockfree,用于在内核中分配和释放一块内存

void* kmalloc(size_t);
void kfree(void*);

Buddy System

目标:get_free_pages, free_pages, 用于分配一片连续的页和释放一片连续的页

初始化

从大到小(为什么?)

void* get_free_pages(int order);
void free_pages(void* page, int order);

slab

目标:slab_alloc, slab_free, 用于分配一块小的空间

追踪一个obj属于的slab

kmalloc

结合buddy system和slab的功能,实现随意分配内存空间

两种方法结合使用的原因